package cn.tedu.design;

/*本类用于完成OOP汽车设计综合案例*/
public class DesignCar {
    public static void main(String[] args) {
        //8.纯纯的父类对象
        Car c=new Car();
        System.out.println(c.getColor());//null 需要使用get方法
        c.start();//父类自己的功能
        c.stop();
        //9.创建宝马类对象
        BMW b=new BMW();
        System.out.println(b.color);//五彩斑斓的黑，子类新定义
//        System.out.println(b.getColor());//也可以显示，null

        b.start();//没有重写，所以是父类的
        b.stop();//重写了，所以是子类的
        //10保时捷对象
        BSJ b2=new BSJ();
        System.out.println(b2.color);
        b2.start();//使用父类继承的
        b2.fly();//使用自己独特的
    }


}
//1.通过归纳总结，抽象封装形成一个类组件
class Car{
    //2属性-成员变量
    //2.1属性的封装通过关键词private来实现
    private String brand;
    private String color;
    private double price;
    private double size;
    //2.2给封装的属性提供公共的属性值设置和访问方式---getXXX，setXXX
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public double getSize() {
        return size;
    }

    public void setSize(double size) {
        this.size = size;
    }


    //3行为-通过方法
    public void start(){
        System.out.println("我的车车启动了");
    }
    public void stop(){
        System.out.println("我的车车熄火了");
    }
 }
 //4.创建宝马并继承，使用extends
 class BMW extends Car{
    String color="五彩斑斓的黑";
    @Override//我是一个重写，遵循两同两小一大原则，重写后，子类对象使用重写后的方法
    public void stop(){
         System.out.println("宝马当然要帅气的停的稳");
     }
 }


 class BSJ extends Car{
    String color="黑不溜秋的白";
    public void fly(){
        System.out.println("起动加速度，我要起飞了up~up");
    }
 }
